
//______________________________________________
//Jose Antonio Munoz 10797
//Oscar Gonzales 10277
//Tarea 1
//______________________________________________


import java.util.InputMismatchException;
import java.util.Scanner;

public class candadoMain {
    public static boolean salir=false, salir1=false,salir2=false;
    static Scanner ingreso=new Scanner(System.in);
    static int valor, val;
    static String valor1;
    public static void print(String a){
        System.out.print("\n"+a);
    }
    public static int ingresoInt(){
        print("\n");
        val=-1;
        while(val==-1){  
            try{
                val=ingreso.nextInt();
            }
            catch(InputMismatchException exception){
                print("\nERROR: Dato invalido. ");
            }
        }
        return val;
    }
    public static int ingresoClave(){
        print("\n");
        val=-1;
        while(val==-1){  
            try{
                val=ingreso.nextInt();
            }
            catch(InputMismatchException exception){
                print("\nERROR: Dato invalido. ");
            }
            if(val>25||val<0){
                print("Ingrese un valor entre 0 y 25");
                val=-1;
            }
            else{
                print("Valor ingresado correctamente");
            }
        }
        return val;
    }
    public static void menu1(int i, candadoInterfaz c1){
        print("----------------------");
        print("1- Ingresar siguiente valor");
        print("2- Resetear");
        print("3- Salir");
        print("----------------------");
        int op=ingresoInt();
        switch(op){
            case 1:
                print("\n"+"\n"+"\n");
                print("Ingrese valor: ");
                c1.press(i,ingresoClave());
                break;
            case 2:
                c1.reset();
                print("La contrasena se ha reiniciado, empiece de nuevo");
                salir1=true;
                break;
            case 3:
                salir1=true;
                salir=true;
                c1.reset();
                break;
        }
    }
    public static void menu(){
        print("\n----------------------");
        print("Ingrese su opcion: ");
        print("1- Ingresar Contrasena");
        print("2- Salir");
        print("----------------------");
    }
    public static void main(String[] args) {
        //Para cambiar implementacion, agregar un 2 despues de
        // candado. (new candado2();)
        candadoInterfaz c1=new candado();
        while(!salir2){
            print("El candado esta: "+c1.getEstado());
            menu();
            int op=ingresoInt();
            salir=false;
            while(!salir){
                salir1=false;
                switch(op){
                    case 1:{
                        menu1(0,c1);
                        if(salir1){
                            break;
                        }
                        print("Valores Ingresados: "+c1.getIngresado(0));
                        menu1(1,c1);
                        if(salir1){
                            break;
                        }
                        print("Valores Ingresados: "+c1.getIngresado(0)+", "+c1.getIngresado(1));
                        menu1(2,c1);
                        if(salir1){
                            break;
                        }
                        print("Valores Ingresados: "+c1.getIngresado(0)+", "+c1.getIngresado(1)+", "+c1.getIngresado(2));
                        menu1(3,c1);
                        if(salir1){
                            break;
                        }
                        print("Valores Ingresados: "+c1.getIngresado(0)+", "+c1.getIngresado(1)+", "+c1.getIngresado(2)+", "+c1.getIngresado(3));
                        }
                        boolean correcto=c1.compare();
                        if(correcto){
                            print("El candado fue abierto");
                        }
                        else{
                            print("El candado no pudo abrirse");
                            break;
                        }
                        print(" ");
                        print("Desea cambiar la clave?");
                        print("1- si");
                        print("2- no");
                        int opcion=ingresoInt();
                        if(opcion==1){
                            print("Ingrese su contrasena de 4 valores"
                                    + "con un enter despues de cada valor");
                            int[] nclave= new int[4];
                            nclave[0]=ingresoClave();
                            nclave[1]=ingresoClave();
                            nclave[2]=ingresoClave();
                            nclave[3]=ingresoClave();
                            c1.setClave(nclave);
                            print("La contrasena nueva es: "+c1.getClave(0)+", "+c1.getClave(1)+", "+c1.getClave(2)+", "+c1.getClave(3));
                            c1.lock();
                            print("El candado fue cerrado");
                        }
                        else if(opcion==2){
                            c1.lock();
                            print("El candado fue cerrado");
                            c1.reset();
                        }
                        else{
                            print("La opcion no es valida");
                            print("El candado se cerrara por seguridad");
                            c1.lock();
                            c1.reset();
                        }
                        salir=true;
                        break;
                    case 2:{
                        salir=true;
                        salir2=true;
                        break;
                    }
                }
            }
        }
    }
}    